﻿Imports System.Windows.Forms
''' <summary>
''' Table_Adapter de Sobres
''' </summary>
''' <remarks></remarks>
''' 
Public Class Linea_SobreTableAdapter
    Inherits DSEATableAdapters.Linea_SobreTableAdapter

    Public Sub Guardar(ByVal DT As DSEA.Linea_SobreDataTable)
        Try
            Me.Update(DT)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function Nuevo_Articulo_Sobres(ByVal intSobre As Integer) As Integer
        Try
            Dim intLinea As Integer = 0

            intLinea = Me.Nueva_ID_Linea(intSobre)
            Return intLinea
        Catch ex As Exception
            Return 0
            MessageBox.Show(ex.Message)
        End Try
    End Function

    Public Sub Nueva_Linea(ByRef DR_Sobre_Cab As DSEA.Cabecera_SobreRow, ByRef DT_Linea_Sobre As DSEA.Linea_SobreDataTable, _
                           ByRef DT_Articulo_sobre As DSEA.Articulos_SobresDataTable, ByRef DTArticulo As Articulo_Compra, ByRef intUnidades As Integer)
        Try
            Dim TA_Articulos_Sobres As New DSEATableAdapters.Articulos_SobresTableAdapter
            Dim TA_Cabecera_Sobre As New Cabecera_SobreTableAdapter
            Dim DR_Linea_Sobre As DSEA.Linea_SobreRow = TryCast(DT_Linea_Sobre.NewRow, DSEA.Linea_SobreRow)
            Dim TA_Aux_Arti_Sobre As New Articulos_SobresTableAdapter
            'Dim strTipoVenta As String
            Dim intLinea As Integer

            If DTArticulo.Count = 1 Then
                intLinea = TA_Aux_Arti_Sobre.Devuelve_Linea_Articulo(TryCast(DTArticulo.Rows(0), DSEA.Articulo_CompraRow).Articulo, DR_Sobre_Cab.Sobre, TryCast(DTArticulo.Rows(0), DSEA.Articulo_CompraRow).Tipo)
            Else
                intLinea = TA_Aux_Arti_Sobre.Linea_Articulo(TryCast(DTArticulo.Rows(0), DSEA.Articulo_CompraRow).Articulo, _
                                                            TryCast(DTArticulo.Rows(1), DSEA.Articulo_CompraRow).Articulo, _
                                                            DR_Sobre_Cab.Sobre)
            End If

            If intLinea = 0 Then
                Dim Suma_Articulo As Double = 0

                DR_Linea_Sobre.Sobre = DR_Sobre_Cab.Sobre
                DR_Linea_Sobre.Linea = Nuevo_Articulo_Sobres(DR_Linea_Sobre.Sobre)

                For Each DR_Articulo As DSEA.Articulo_CompraRow In DTArticulo
                    Dim TA_Aux As New DSEATableAdapters.ArticulosTableAdapter
                    Dim DT_Articulos As New DSEA.ArticulosDataTable
                    Dim DR_Articulo_Sobre As DSEA.Articulos_SobresRow = TryCast(DT_Articulo_sobre.NewRow, DSEA.Articulos_SobresRow)

                    TA_Aux.FillByArticulo(DT_Articulos, DR_Articulo.Articulo)
                    Dim DR_ARTICULO_AUX As DSEA.ArticulosRow = TryCast(DT_Articulos.Rows(0), DSEA.ArticulosRow)

                    DR_Articulo_Sobre.Sobre = DR_Sobre_Cab.Sobre
                    DR_Articulo_Sobre.Linea = DR_Linea_Sobre.Linea
                    DR_Articulo_Sobre.Articulo = DR_Articulo.Articulo

                    Select TryCast(DTArticulo.Rows(0), DSEA.Articulo_CompraRow).Tipo
                        Case DSEA.Tipo_Venta_Articulo.Copa
                            DR_Articulo_Sobre.Consumo_Articulo = DR_ARTICULO_AUX.Consumo_Copa
                            DR_Articulo_Sobre.Precio_Articulo = DR_ARTICULO_AUX.Precio_Venta_Copa
                        Case DSEA.Tipo_Venta_Articulo.Tapon
                            DR_Articulo_Sobre.Consumo_Articulo = DR_ARTICULO_AUX.Consumo_Tapon
                            DR_Articulo_Sobre.Precio_Articulo = DR_ARTICULO_AUX.Precio_Venta_Tapon
                        Case DSEA.Tipo_Venta_Articulo.Refresco, DSEA.Tipo_Venta_Articulo.Botella
                            DR_Articulo_Sobre.Consumo_Articulo = 100
                            DR_Articulo_Sobre.Precio_Articulo = DR_ARTICULO_AUX.Precio_Venta_Completa
                        Case DSEA.Tipo_Venta_Articulo.Combinado
                            If DR_ARTICULO_AUX.Tipo = DSEA.Tipo_Articulo.RefrescosYCervezas Then
                                DR_Articulo_Sobre.Consumo_Articulo = 100
                                DR_Articulo_Sobre.Precio_Articulo = DR_ARTICULO_AUX.Precio_Venta_Completa
                            ElseIf DR_ARTICULO_AUX.Tipo = DSEA.Tipo_Articulo.CopasCombinados Then
                                DR_Articulo_Sobre.Consumo_Articulo = DR_ARTICULO_AUX.Consumo_Copa
                                DR_Articulo_Sobre.Precio_Articulo = DR_ARTICULO_AUX.Precio_Venta_Copa
                            End If
                        Case DSEA.Tipo_Venta_Articulo.Cafes_Y_Otros
                            DR_Articulo_Sobre.Consumo_Articulo = 100
                            DR_Articulo_Sobre.Precio_Articulo = DR_ARTICULO_AUX.Precio_Venta_Completa
                    End Select

                    DR_Articulo_Sobre.Tipo_Articulo_Venta = TryCast(DTArticulo.Rows(0), DSEA.Articulo_CompraRow).Tipo

                    Suma_Articulo = Suma_Articulo + DR_Articulo_Sobre.Precio_Articulo

                    DT_Articulo_sobre.AddArticulos_SobresRow(DR_Articulo_Sobre)
                Next

                DR_Linea_Sobre.Unidades = Format(intUnidades, "###.00")
                DR_Linea_Sobre.Total_Linea = Format(intUnidades * Suma_Articulo, "###.00")
                DR_Linea_Sobre.Precio_Articulo = Format(Suma_Articulo, "###.00")

                DT_Linea_Sobre.AddLinea_SobreRow(DR_Linea_Sobre)
            Else
                Dim DR_Aux As DSEA.Linea_SobreRow = DT_Linea_Sobre.Select("Linea =  " & intLinea & " and Sobre = " & DR_Sobre_Cab.Sobre).First

                DR_Aux.Unidades = Format(DR_Aux.Unidades + intUnidades, "###.00")
                DR_Aux.Total_Linea = Format(DR_Aux.Unidades * DR_Aux.Precio_Articulo, "###.00")
            End If

            If DR_Sobre_Cab.Gasto_Cocina Then
                DR_Sobre_Cab.Total_Gasto = DR_Sobre_Cab.Personas * DSEA.DR_Parametros.Gasto_Cocina
            Else
                DR_Sobre_Cab.Total_Gasto = 0
            End If

            DR_Sobre_Cab.Recalcula_Total(DT_Linea_Sobre)

            TA_Cabecera_Sobre.Guardar(DR_Sobre_Cab)
            Me.Guardar(DT_Linea_Sobre)
            TA_Articulos_Sobres.Update(DT_Articulo_sobre)

            DTArticulo.Clear()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Public Sub Borrar_Linea(ByRef DR As DSEA.Linea_SobreRow)
        Try
            Dim TA_Arti_Lineas As New Articulos_SobresTableAdapter

            TA_Arti_Lineas.Borrar_Lineas_Articulos(DR.Sobre, DR.Linea)
            DR.Delete()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Public Sub Borrar_Unidad(ByRef DR As DSEA.Linea_SobreRow)
        Try
            Dim TA_Arti_Lineas As New Articulos_SobresTableAdapter

            If DR.Unidades > 1 Then
                DR.Unidades = DR.Unidades - 1
            Else
                Borrar_Linea(DR)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class

Partial Class DSEA
    Partial Class Linea_SobreDataTablE
        Private Sub Linea_SobreDataTable_Linea_SobreRowChanged(ByVal sender As Object, ByVal e As Linea_SobreRowChangeEvent) Handles Me.Linea_SobreRowChanged
            Dim DR_Aux As DSEA.Linea_SobreRow = TryCast(e.Row, DSEA.Linea_SobreRow)
            Dim Total As Double

            For Each Dr As DSEA.Linea_SobreRow In TryCast(DR_Aux.Table, DSEA.Linea_SobreDataTable)
                Total = Total + Dr.Total_Linea
            Next


        End Sub
    End Class
End Class